Skip to content

Commit d0ed540

Browse files
committed
Factor RemoveButton from {RelationEditor,ExtResourceEditItem}View (#455)
1 parent 659f624 commit d0ed540

File tree

6 files changed

+45
-23
lines changed

6 files changed

+45
-23
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<button type=button class="button is-danger">
2+
<span>Remove</span>
3+
<span class="icon is-small"><i class="fas fa-times"></i></span>
4+
</button>
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { extend } from 'lodash';
2+
3+
import View from '../core/view';
4+
5+
import removeButtonTemplate from './remove-button-template';
6+
7+
export default class RemoveButton extends View {
8+
initialize(): void {
9+
this.render();
10+
}
11+
12+
render(): this {
13+
this.$el.html(this.template({}));
14+
return this;
15+
}
16+
17+
onClick(): void {
18+
this.trigger('click', this);
19+
}
20+
}
21+
22+
extend(RemoveButton.prototype, {
23+
className: 'control',
24+
template: removeButtonTemplate,
25+
events: {
26+
click: 'onClick',
27+
},
28+
});

frontend/src/panel-external-resources/external-resource-edit-item-template.hbs

-6
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,3 @@
66
<input class="input" type="url" value="{{url}}" required>
77
{{/if}}
88
</div>
9-
<div class="control">
10-
<button type=button class="button is-danger remove">
11-
<span>Remove</span>
12-
<span class="icon is-small"><i class="fas fa-times"></i></span>
13-
</button>
14-
</div>

frontend/src/panel-external-resources/external-resource-edit-item-view.ts

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
import { extend } from 'lodash';
22

3-
import externalResourceEditItemTemplate from './external-resource-edit-item-template';
43
import { CompositeView } from '../core/view';
54
import PickerView from '../forms/base-picker-view';
5+
import RemoveButton from '../forms/remove-button-view';
66
import Graph from '../common-rdf/graph';
77
import Node from '../common-rdf/node';
88
import { owl, rdfs } from '../common-rdf/ns';
99

10+
import externalResourceEditItemTemplate from './external-resource-edit-item-template';
11+
1012
const externalAttributes = [
1113
rdfs.seeAlso,
1214
owl.sameAs
1315
];
1416

1517
export default class ExternalResourceEditItem extends CompositeView {
1618
predicatePicker: PickerView;
19+
removeButton: RemoveButton;
1720
predicates: Graph;
1821
url: string;
1922

@@ -30,6 +33,7 @@ export default class ExternalResourceEditItem extends CompositeView {
3033
this.predicatePicker.val(this.model.get('predicate'));
3134
}
3235
this.predicatePicker.on('change', this.updatePredicate, this);
36+
this.removeButton = new RemoveButton().on('click', this.close, this);
3337
this.render();
3438
}
3539

@@ -38,9 +42,8 @@ export default class ExternalResourceEditItem extends CompositeView {
3842
return this;
3943
}
4044

41-
removeExternalResource(): this {
45+
close(): void {
4246
this.trigger('remove', this, this.model);
43-
return this;
4447
}
4548

4649
updatePredicate(view: PickerView, id: string): void {
@@ -63,12 +66,11 @@ extend(ExternalResourceEditItem.prototype, {
6366
subviews: [{
6467
view: 'predicatePicker',
6568
selector: '.control:first-child',
66-
},],
69+
}, 'removeButton'],
6770
events: {
6871
'change input': 'changeUrl',
69-
'click .remove': 'removeExternalResource'
70-
}
71-
})
72+
},
73+
});
7274

7375
if (window['DEBUGGING']) {
7476
window['ExternalResourceEditItem'] = ExternalResourceEditItem;

frontend/src/panel-related-items/relation-editor-template.hbs

-6
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,3 @@
44
<div class="control is-expanded">
55
{{! object picker }}
66
</div>
7-
<div class="control">
8-
<button type=button class="button is-danger">
9-
<span>Remove</span>
10-
<span class="icon is-small"><i class="fas fa-times"></i></span>
11-
</button>
12-
</div>

frontend/src/panel-related-items/relation-editor-view.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Node from '../common-rdf/node';
88
import Graph from '../common-rdf/graph';
99
import PickerView from '../forms/base-picker-view';
1010
import RangePicker from '../forms/range-picker-view';
11+
import RemoveButton from '../forms/remove-button-view';
1112
import ItemGraph from '../common-adapters/item-graph';
1213
import relationTemplate from './relation-editor-template';
1314

@@ -18,12 +19,14 @@ export default class RelationEditor extends CompositeView {
1819
collection: Graph;
1920
predicatePicker: PickerView;
2021
objectPicker: RangePicker;
22+
removeButton: RemoveButton;
2123

2224
initialize() {
2325
this.predicatePicker = new PickerView({collection: this.collection});
2426
this.predicatePicker.on('change', this.updatePredicate, this);
2527
if (!this.model) this.model = new Model();
2628
this.predicateFromModel(this.model).objectFromModel(this.model);
29+
this.removeButton = new RemoveButton().on('click', this.close, this);
2730
this.render();
2831
}
2932

@@ -86,14 +89,11 @@ export default class RelationEditor extends CompositeView {
8689
extend(RelationEditor.prototype, {
8790
className: 'field has-addons rit-relation-editor',
8891
template: relationTemplate,
89-
events: {
90-
'click button.is-danger': 'close',
91-
},
9292
subviews: [{
9393
view: 'predicatePicker',
9494
selector: '.control:first-child',
9595
}, {
9696
view: 'objectPicker',
9797
selector: objectControl,
98-
}],
98+
}, 'removeButton'],
9999
});

0 commit comments

Comments
 (0)