blob: 044cc4e2e0c06e139bcee5455778e8da5af0a0e2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import 'package:json_annotation/json_annotation.dart';
import '../enums/complexity.dart';
import 'dataset.dart';
import 'example_base.dart';
import 'example_view_options.dart';
import 'sdk.dart';
import 'snippet_file.dart';
part 'example.g.dart';
/// A [ExampleBase] that also has all large fields fetched.
@JsonSerializable()
class Example extends ExampleBase {
final List<SnippetFile> files;
final String? graph;
final String? logs;
final String? outputs;
const Example({
required this.files,
required super.name,
required super.sdk,
required super.type,
required super.path,
super.alwaysRun,
super.complexity,
super.contextLine,
super.datasets,
super.description,
this.graph,
super.isMultiFile,
this.logs,
this.outputs,
super.pipelineOptions,
super.tags,
super.urlNotebook,
super.urlVcs,
super.viewOptions,
});
factory Example.fromJson(Map<String, dynamic> json) =>
_$ExampleFromJson(json);
@override
Map<String, dynamic> toJson() => _$ExampleToJson(this);
Example.fromBase(
ExampleBase example, {
required this.files,
required this.logs,
required this.outputs,
this.graph,
}) : super(
alwaysRun: example.alwaysRun,
complexity: example.complexity,
contextLine: example.contextLine,
datasets: example.datasets,
description: example.description,
isMultiFile: example.isMultiFile,
name: example.name,
path: example.path,
pipelineOptions: example.pipelineOptions,
sdk: example.sdk,
tags: example.tags,
type: example.type,
urlNotebook: example.urlNotebook,
urlVcs: example.urlVcs,
viewOptions: example.viewOptions,
);
Example.empty(Sdk sdk)
: this(
name: 'Untitled Example',
files: [SnippetFile.empty],
path: '',
sdk: sdk,
type: ExampleType.example,
);
Example copyWith({
ExampleViewOptions? viewOptions,
}) {
return Example(
alwaysRun: alwaysRun,
complexity: complexity,
contextLine: contextLine,
datasets: datasets,
description: description,
files: files,
graph: graph,
isMultiFile: isMultiFile,
logs: logs,
name: name,
outputs: outputs,
path: path,
pipelineOptions: pipelineOptions,
sdk: sdk,
tags: tags,
type: type,
urlNotebook: urlNotebook,
urlVcs: urlVcs,
viewOptions: viewOptions ?? this.viewOptions,
);
}
}