Migrate topic style.

This commit is contained in:
Paulo Gustavo Veiga 2022-12-10 12:31:30 -08:00
parent d80260ae8b
commit 32b8e89b13
3 changed files with 68 additions and 52 deletions

View File

@ -67,6 +67,7 @@ class IconGroupRemoveTip {
if (this._activeIcon) { if (this._activeIcon) {
const widget = this._widget; const widget = this._widget;
const close = () => { const close = () => {
this._activeIcon = null; this._activeIcon = null;
this._group.removeChild(widget); this._group.removeChild(widget);

View File

@ -21,6 +21,8 @@ import EmojiCharIcon from './EmojiCharIcon';
import SvgImageIcon from './SvgImageIcon'; import SvgImageIcon from './SvgImageIcon';
import LinkIcon from './LinkIcon'; import LinkIcon from './LinkIcon';
import NoteIcon from './NoteIcon'; import NoteIcon from './NoteIcon';
import Topic from './Topic';
import FeatureModel from './model/FeatureModel';
const TopicFeatureFactory = { const TopicFeatureFactory = {
/** the icon object */ /** the icon object */
@ -46,7 +48,7 @@ const TopicFeatureFactory = {
icon: NoteIcon, icon: NoteIcon,
}, },
createIcon(topic, model, readOnly) { createIcon(topic: Topic, model: FeatureModel, readOnly: boolean) {
$assert(topic, 'topic can not be null'); $assert(topic, 'topic can not be null');
$assert(model, 'model can not be null'); $assert(model, 'model can not be null');

View File

@ -15,59 +15,26 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import { $assert, $defined } from '@wisemapping/core-js'; import { $assert } from '@wisemapping/core-js';
import { $msg } from './Messages'; import { $msg } from './Messages';
import { TopicShape } from './model/INodeModel'; import { TopicShape } from './model/INodeModel';
import Topic from './Topic';
class TopicStyle { type TopicStyleType = {
static _getStyles(topic) { borderColor: string;
$assert(topic, 'topic can not be null'); backgroundColor: string;
fontStyle: {
font: string;
size: number;
style: string;
weight: string;
color: string;
};
msgKey: string;
shapeType: string;
};
let result; const TopicDefaultStyles = {
if (topic.isCentralTopic()) {
result = TopicStyle.STYLES.CENTRAL_TOPIC;
} else {
const targetTopic = topic.getOutgoingConnectedTopic();
if ($defined(targetTopic)) {
if (targetTopic.isCentralTopic()) {
result = TopicStyle.STYLES.MAIN_TOPIC;
} else {
result = TopicStyle.STYLES.SUB_TOPIC;
}
} else {
result = TopicStyle.STYLES.ISOLATED_TOPIC;
}
}
return result;
}
static defaultText(topic) {
const { msgKey } = this._getStyles(topic);
return $msg(msgKey);
}
static defaultFontStyle(topic) {
return this._getStyles(topic).fontStyle;
}
static defaultBackgroundColor(topic) {
return this._getStyles(topic).backgroundColor;
}
static defaultBorderColor(topic) {
return this._getStyles(topic).borderColor;
}
static getInnerPadding(topic) {
return Math.round(topic.getTextShape().getFontHeight() * 0.5);
}
static defaultShapeType(topic) {
return this._getStyles(topic).shapeType;
}
}
TopicStyle.STYLES = {
CENTRAL_TOPIC: { CENTRAL_TOPIC: {
borderColor: 'rgb(57,113,177)', borderColor: 'rgb(57,113,177)',
backgroundColor: 'rgb(80,157,192)', backgroundColor: 'rgb(80,157,192)',
@ -81,7 +48,6 @@ TopicStyle.STYLES = {
msgKey: 'CENTRAL_TOPIC', msgKey: 'CENTRAL_TOPIC',
shapeType: TopicShape.ROUNDED_RECT, shapeType: TopicShape.ROUNDED_RECT,
}, },
MAIN_TOPIC: { MAIN_TOPIC: {
borderColor: 'rgb(2,59,185)', borderColor: 'rgb(2,59,185)',
backgroundColor: 'rgb(224,229,239)', backgroundColor: 'rgb(224,229,239)',
@ -95,7 +61,6 @@ TopicStyle.STYLES = {
msgKey: 'MAIN_TOPIC', msgKey: 'MAIN_TOPIC',
shapeType: TopicShape.LINE, shapeType: TopicShape.LINE,
}, },
SUB_TOPIC: { SUB_TOPIC: {
borderColor: 'rgb(2,59,185)', borderColor: 'rgb(2,59,185)',
backgroundColor: 'rgb(224,229,239)', backgroundColor: 'rgb(224,229,239)',
@ -125,4 +90,52 @@ TopicStyle.STYLES = {
}, },
}; };
class TopicStyle {
static _getStyles(topic: Topic): TopicStyleType {
$assert(topic, 'topic can not be null');
let result: TopicStyleType;
if (topic.isCentralTopic()) {
result = TopicDefaultStyles.CENTRAL_TOPIC;
} else {
const targetTopic = topic.getOutgoingConnectedTopic();
if (targetTopic) {
if (targetTopic.isCentralTopic()) {
result = TopicDefaultStyles.MAIN_TOPIC;
} else {
result = TopicDefaultStyles.SUB_TOPIC;
}
} else {
result = TopicDefaultStyles.ISOLATED_TOPIC;
}
}
return result;
}
static defaultText(topic: Topic) {
const { msgKey } = this._getStyles(topic);
return $msg(msgKey);
}
static defaultFontStyle(topic: Topic) {
return this._getStyles(topic).fontStyle;
}
static defaultBackgroundColor(topic: Topic) {
return this._getStyles(topic).backgroundColor;
}
static defaultBorderColor(topic: Topic) {
return this._getStyles(topic).borderColor;
}
static getInnerPadding(topic: Topic) {
return Math.round(topic.getTextShape().getFontHeight() * 0.5);
}
static defaultShapeType(topic) {
return this._getStyles(topic).shapeType;
}
}
export default TopicStyle; export default TopicStyle;